<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>计算属性简写</title>
    <!-- 引入Vue.js -->
    <script src="../js/vue.js"></script>
    <style>
      * {
        margin-bottom: 10px;
      }
    </style>
  </head>
  <body>
    <!-- 准备好一个容器 -->
    <div id="root">
      姓:<input type="text" v-model="firstName" /><br />
      <!-- v-model 双向绑定 -->
      名:<input type="text" v-model="lastName" /><br />
      姓名 <span>{{fullName}}</span>
      <!-- 使用计算属性 fullName -->
      <!-- 模板语法内可以使用 vm实例中的所有属性 -->
    </div>
  </body>
  <script>
    const vm = new Vue({
      el: "#root",
      data() {
        // 注意:当data发生了改变,模板一定会重新进行解析
        return {
          // 属性: data里配置的数据
          firstName: "张",
          lastName: "三",
        };
      },
      // 计算属性  存在于 vm 实例上
      computed: {
        // 完整写法
        /* fullName: {   // fullName为计算属性名
          get() {
            return `${this.firstName}-${this.lastName}`; // this:vm
          },
          set(value) {
            console.log("fullName被修改为:", value);
            [this.firstName, this.lastName] = value.split("-");
          },
        }, */
        // 当计算属性只读不做修改时,可以进行简写
        fullName() {
          // 函数作为get函数使用
          return `${this.firstName}-${this.lastName}`; 
          // 当依赖计算的属性发生改变会重新调用get方法,更新计算属性的值
        },
      },
    });
  </script>
</html>
